查看原文
其他

快手内容冷启动推荐模型实践

丘志杰 DataFunSummit
2024-09-10
导读快手每天有海量的创作者生产视频内容,每天的新视频达到千万的量级,而每个新视频其实都是嗷嗷待哺的新生儿,我们团队主要是从 B 端视角出发完成新内容的分发。本文将分享快手在内容冷启动推荐方面的实践。

文章主要包括四个部分:

1. 快手的内容冷启动解决什么问题

2. 冷启动建模的挑战与解决方案

3. 未来展望

4. 问答环节
分享嘉宾|丘志杰 快手 内容增长推荐算法专家
编辑整理|段上雄
内容校对|李瑶
出品社区|DataFun

01

快手的内容冷启动解决什么问题

首先来看一下快手冷启动要解决的问题。

短期来看,平台首先要让更多的新视频能够获得流量,也就是能够发得出去。同时也要让发出去的流量有比较好的效率。长期来看,我们也要去探索挖掘更多的高潜新视频,为整个热门池提供更多的新鲜血液,缓解生态的马太效应。提供更多的优质内容,带来用户体验的提升,同时也带来时长和 DAU 的增长。

通过冷启动去促进 UGC 作者能够获得一些互动的反馈激励,维持整个生产者的留存。在这个过程中会有两个约束,第一个是整体的探索成本,流量成本在大盘中要是相对比较稳定的;第二个是我们只干预新视频低 vv 阶段的分发。那么我们如何在这些约束条件下完成整体收益的最大化呢?

视频冷启动分发决定了他的成长空间,特别是如果一个作品被分发给了兴趣不匹配的人群,会产生两个方面的影响。第一个是作者的生长会受到影响,长期得不到有效的互动流量激励,他的投稿的方向以及投稿意愿都会产生变化。第二个是由于早期的流量没有有效的动作率,系统会认为这是一个不够优质的内容,它会长期拿不到足够的流量,这样它也就成长不起来。

长此以往,生态就会陷入一个比较不好的状态。比如有一个本地美食的作品,它肯定有一个最适合的受众人群 A,他的动作率整体是最高的。而另外可能有一个完全不相关的人群 C,在投给这个人群的时候会有一定的挑选性,动作率可能会极低。当然还有第三种人群 B,该人群是一个兴趣非常广泛的人群,虽然这个人群流量很大,但是整体上这部分人群的动作率也是会偏低的。

如果我们能够尽早的触达核心人群A提升内容早期的互动率,就可以带来一个自然流量的撬动分发。但是如果我们早期过多地把流量给到了 C 人群或者 B 人群,就会导致整体的动作率偏低,就会限制他的成长。总而言之,提升冷启分发效率是完成内容成长的一个最重要的途径。为了完成内容冷启动效率的迭代,我们会建立一些中间过程指标和最终的长期指标。

过程指标主要分为两部分,一个是新视频的消费表现,主要包括它们的流量动作率;第二个是出坡指标,包括探索向、利用向和生态向。探索向是保证优质的新视频不漏球,主要观测曝光大于0,曝光大于100的一些视频数的增长情况。利用项是看高热优质新视频其高 VV 出坡视频数的增长。生态向主要是看热门池的优普率。长期来看,由于这是一个通过生态影响带来的长期变化,所以我们最终在量化方法上会通过 Combo 实验长期观察一些核心指标的变化趋势,包括 APP 时长、作者 DAU 和大盘 DAU。

02

冷启动建模的挑战与解决方案

总体来说,内容冷启动主要包括三个方面的困难。第一个是内容冷启动的样本空间与真实求解空间存在巨大的差异。第二个是内容冷启动的样本是非常稀疏的,会导致学习不准确,偏差非常大,特别是其在曝光偏差中是处于弱势的。第三个是视频成长价值的建模困难,这也是我们规划中的,正在做的工作。本次重点介绍前两个方面。

1. 样本空间远小于真实求解空间的问题

在内容冷启动优化问题上,样本空间小于求解空间,这个问题异常突出。特别是内容冷启动的推荐,要提升索引内容的触达率,让更多的视频有机会透出。

我们认为要解决这个问题,最重要的是在召回阶段提升视频的触达和透出效率。为了解决冷启动视频的召回触达率。业界普遍的做法是基于 Content-Based,包括属性倒排、基于语义相似度的一些召回方法,或者是基于双塔加泛化特征的召回模型,又或者是引入行为空间和内容空间的映射,类似于 CB2CF 的做法。

本次我们将重点介绍两个比较有意思的新方法,分别是基于图熵自增强的异构图网络和基于 I2U 的星河模型。在技术选型上,我们首先使用 GNN 作为内容冷启动 U2I 的  Base model。因为我们考虑到 GNN 整体上是归纳式的学习方法,它对于新增节点非常友好,提供了更加的灵活性。另外,GNN 中引入了更多的属性节点,是增强冷启动内容触达的一个重要手段。具体实践方面,我们也是会引入 user 节点、author 节点和 item 节点,并完成信息的聚合。引入了这种泛化属性节点后,新内容的整体触达率得到了极大的提升。但是泛化性过强的中间节点,例如 tag 类目也会引起视频的感知域不够个性化,带来过平滑的风险。从 case 回查上看,我们发现有些喜欢看羽毛球视频的用户,现有的这种 GNN 刻画方案容易引起羽毛球视频和其他乒乓球、足球等视频的区分能力不够好。

为了解决 GNN 建模过程中引入过多泛化信息带来泛化过度的问题,我们的思路主要是引入更细致化的邻居刻画方案,具体会在 GNN 中引入语义自增强边。从右下角的图可以看到,我们会基于冷门视频去寻找它在热门空间中的相似热门视频,然后热门相似视频作为冷启连边的初始节点,在具体聚合的过程中,我们会基于图熵减小的原则,进行自增强边的构造和挑选。具体的挑选方案从公式可以看到,主要是考虑上面这个连边邻居节点和当前节点信息的描述。如果两个节点相似度越高,那么它们的信息熵会越小。下面的节点的分母代表的是邻居节点整体的感知域,也可以理解为在挑选的过程中,我们更希望寻找到一个感知欲比较强的邻居节点。

在实践过程中,我们主要有两个技巧,一个是相似视频的特征域和 item id 的特征域要共享 embedding 空间,然后是自增强节点只保留热门视频,去除学习不充分节点引入的噪声。有了这个升级之后,泛化性整体上得到充分保证情况下,有效提升了模型的个性化程度,并带来了离线和在线的效果提升。

上述方法其实都是从 U2I 视角去建模完成内容触达的一个提升,但是无法从根本上解决视频无法触达的问题。

如果转化一下思路,从 item 的视角去寻找合适的人群,也就是切换到 I2U 的视角,理论上每一个视频都有获取流量的空间。

具体的做法是,我们要训练一个 I2U 的检索服务,通过检索服务动态地为每个视频检索兴趣人群。通过 I2U 的这种编构图,反向构建 U2I 的倒排索引,最后根据用户的实时请求返回 item list 作为冷启推荐列表。

其中的重点是要训练一个 I2U 的检索服务,我们的初版是一个双塔模型。在实践的过程中,为了避免挂载用户过于集中的问题,我们首先会弃用 uid 而使用 action list和 self-attention 的方式有效地缓解用户聚集问题;同时,为了避免在学习过程 item-id 带来的学习曝光偏差,我们会弃用 item-id 而引入更多的语义向量、类目、tag 和 AuthorID 等这样的泛化特征来有效的缓解 item-id 的聚集。从 user 视角来看,引入了这种 Debias 的 loss,然后引入 batch 内的负采样,更好地避免用户集中的问题。

双塔的 I2U 模型是我们的首版实践,在实践过程中也有发现了一些问题。首先是双塔模型存在 user 和 item 交互的局限性,整体的检索精度受到了限制。另外,还有兴趣集中的问题,挂载在用户身上的内容经常会兴趣非常集中,但事实上用户的兴趣是多峰分布。我们还发现挂载的用户过于集中的问题,大部分的冷启视频会挂载在一些头部用户身上,这也是不够合理的,因为毕竟头部的用户每天能消费的内容也是有限的。

为了解决上面三个问题,新的解决方案是 TDM 建模和 TDM 分层检索方式。TDM 的一个好处是可以引入更加复杂的 user-item 交互模式,突破双塔的交互限制。第二个是使用类似于 DIN 的模式,可以减少对单峰兴趣的依赖。最后是 TDM 中引入分层检索可以非常有效地缓解挂载用户集中的问题。

此外我们还有一个比较有效的优化点是给父亲节点增加子孙节点的聚合表示,增强父亲节点的特征泛化和判别精度,就是会把儿子节点通过 Attention 的方式聚合到父亲节点,通过层层透传可以使得中间节点也具有一定的语义泛化能力。

除了 I2U model 之外,我们在最终的系统实践过程中,还引入了 U2U 的兴趣拓展模块,也就是冷启视频如果在某些用户表现很好,会做一个快速的扩散。

具体与目前业界 U2U 的一些方法是类似的,但是这里的 U2U 兴趣扩展模块主要有三个方面的优势,一个是 TDM 树结构相对比较固化,增加这种 U2U 模块可以更加贴近用户的实时偏好。此外通过这种实时兴趣的扩散,我们也可以突破模型的限制,通过用户的协同,将内容快速的推广,带来多样性的提升,最终也能提升星河召回的整体覆盖率,这是我们在实践过程中的一些优化点。

总的来说,我们通过这些方案能够有效地解决内容冷启动的样本空间和真实求解空间不一致性的问题,使得冷启动的触达和覆盖得到很明显的提升。

2. 冷启动样本稀疏学习不准确与偏差大

接下来介绍内容冷启动样本稀疏性导致学习不准确和偏差大的问题,这是一个最大的挑战。这个问题的本质是交互行为的稀疏性,我们把问题展开为三个方向。

首先是样本上由于冷启的样本曝光少,导致 item id 学习非常不充分,从而最终的透出和推荐效率也受到影响。第二个是由于早期分发的不准确,收集的 label 不确定性比较高,置信度比较低。第三个是不做纠偏的情况下,目前训练范式会将热度信息引入到 item 的 embedding 中,导致冷启视频有可能会被低估,从而分发不出去。

我们主要从四个方向去解决这个问题。第一个是泛化,第二个是迁移,第三个是探索,第四个是纠偏。泛化更多是从泛化特征的角度来完成建模和升级。迁移主要是想把冷门和热门的视频当做两个域,将热门视频域或者全量信息域的信息进行有效迁移来辅助冷门视频的学习。探索主要是引入探索和利用的思想,就是在早期 label 不准确的情况下,我们希望在建模的过程中就引入探索的思想,从而缓解冷启阶段的不置信 label 带来的负面影响。热度纠偏是目前比较火的一些方向,我们主要通过门控和正则 loss 的方式来约束热度信息的使用。

下面具体介绍我们的工作。

首先,泛化是目前解决冷启动问题一个非常普遍并且常用的手段。但是在我们实践过程中还是发现,相比于 tag、类目而言,引入一些语义 embedding 其实也是会比较有用的,但是这种直接把语义型特征直接加进来,整体带来的收益是非常有限的。既然视频语义空间和行为空间本身存在差异,我们能否通过视频语义的共性信息得到新视频在行为空间中的一个近似表征,通过这种泛化的信息来辅助。其实之前我们也提到有些做法,包括 CB2CF 这种思路,它会将泛化信息和真实行为空间做映射学习。我们其实并不是这么做的,实际实践的过程中我们会根据视频的语义向量找到和 target  item 相似的 similar item list,首先它会和用户的长短期兴趣行为共享行为空间,同时我们会把 similar item list 做聚合,模拟得到候选视频在行为空间中的表征。其实这个做法跟我们刚才提到的图召回中引入与候选 item 相似连边的做法是一脉相承的,这个做法的效果是非常明显的,在离线 AUC 上有 0.35PP 的提升。

第二个是探索,就是新视频早期分发不准会导致后验 CTR 均值偏低,而这种均值偏低也会导致模型认为视频本身可能质量比较差,最终冷启动内容的探索性就受到了限制。那么能否建模 PCTR 的不确定性,减缓冷启阶段label的绝对利用和信任。我们尝试着将一次请求的 CTR 预估转变为一个 Beta 分布的预估,在线兼顾使用期望和方差。具体在实践过程中,我们会预估 Beta 分布的一个 α 和 β,具体在 loss 设计是预估的值和真实 label 的均方差的期望值。我们把期望值展开之后会发现需要得到预估值平方的期望和预估值的期望。而这两个值我们通过预估出来的 α 和 β 可以有效的计算出来, loss 也就生成了,然后我们就能够训练 Beta 分布,最后把 Beta 分布的预估值增加一个队列平衡探索与利用。其实我们在低 vv 阶段使用 Beta 的 loss 在 AUC 上有一定的提升,但并不是特别明显。但我们把贝塔分布在线使用能够在整体动作率持平的情况下,使得 0vv 的内容有效透出率增长22%。

接下来介绍的是对偶域迁移学习框架。整体的思想是,冷启动内容通常是高度倾斜的长尾分布,也是流行性偏见中的弱势群体。如果我们只使用冷启动样本,可以一定程度上缓解流行性的偏差,但是会丢失大量的用户兴趣,导致整体的精度下降。

我们目前已有的一些尝试,大多数是通过高热样本的一些欠采样,或者逆频率加权或者泛化特征的方式来侧重冷启样本的学习,但是往往忽略了冷启动早期行为样本与热门视频的在行为空间上的一个内在共性。

所以我们在设计过程中会把全量样本和冷启样本分为两个域,就是上图中的全量域和冷启域,全量域对所有的样本都生效,冷启域只针对冷启条件的样本才生效,然后增加双边的冷热知识域的迁移模块。具体的是会对 user 和 item 分别建模,从全域的样本塔到冷启样本塔的网络映射,从而在模型层面捕捉隐式的数据增强,提升冷启动视频的表示。在 item 侧我们会保留全量所有冷启样本,此外,也会对一些高热的视频根据曝光量进行采样,保证冷热域分布的相似性,最终能够确保整个映射的知识迁移的平滑。

此外我们还增加了一个独有的对偶流行度门控机制,引入一些流行性特征,用它去辅助冷热视频域的融合配比。一方面,新视频在不同的生命周期下冷启表达利用率的配比可以得到有效的学习和分配。另一方面,在用户侧也学习了不同活跃用户对冷启视频的敏感度。在实践过程中,离线效果无论在低 vv 阶段还是 4000vv 的 AUC 都有一定的提升。

最后介绍一个在纠偏方面的工作,也就是热度纠偏。推荐系统经常会面临着热度的偏差,整体上是高爆品的狂欢。现有的模型范式拟合的目标是全局的 CTR,推荐热门可能获得整体 loss 更低,但也会将一些热度的信息注入到 item embedding 中,引起高热视频被高估。

现有的一些方法一味追求做一些无偏估计,其实也会带来一些消费的损失。那么我们能否将一些 item embedding 在热度信息和真实的兴趣信息上解耦,有效利用热度信息和兴趣信息做在线融合,这可能是一个更加合理的方式。具体实践过程中我们参考了同行的一些做法。

重点主要是两个模块,一个是做了输入内容热度和兴趣的正交约束,比如输入的是 item id、author id 等特征,会生成两个表征,这两个表征一个是热度表征,一个是真实兴趣表征,求解过程中会做一个正则约束。第二个是我们会将一些 item 的纯热度信息也生成 embedding 作为视频的纯热度表征,纯热度表征会根据视频的真实热度表征去做一个相似性约束,这样就可以得到刚才说到的热度表征和兴趣表征,他们一个是表达热度信息,一个是在表达兴趣信息。最后会基于这两个表征在线添加一个有偏估计和无偏估计的队列做乘法公式融合。

03

未来展望

最后来分享一下对未来工作的展望。

首先是在人群扩散模型上更加精细化的建模与应用,特别是人群扩散的实时性,包括目前的 lookalike。我们其实也落地了一些 lookalike 的方案,比如在冷启阶段 U2U 的一个扩散应用,我们希望把它做得更精细化。

第二个是纠偏的方案,目前的因果模型在冷启动纠偏中也是有很多的研究,我们也会在这个方向做持续的研究和探索,特别是对于曝光的纠偏,还有热度的纠偏,第三个是在样本选择上,高热样本对于冷启的推荐还是有更大的价值的,能否在高热样本空间中挑选出一些更有价值的样本,给他们以不同的权重来提升冷启模型的推荐效率。

第三个是视频的长期成长价值的刻画,每个视频都需要经历冷启-成长-稳定-衰落的过程,如何在建模视频的时候更加关注它的长期收益,也就是成长空间,特别是在撬动价值方面,如何建模不同的单次分发对未来成长的价值差异,这也是一项非常有意思的工作。

最后一个是通过数据增强的方案,无论是样本还是对比学习的方案,我们都希望引入一些这方面的工作提升冷启推荐的效率。

04

问答环节

Q1:线上请求都是 user 粒度的,线上是如何把 I2U 的 user 放到向量引擎的?

A1:I2U 模型在离线会不断在索引库去找它最相似的用户,然后根据 item 找到的最相似的 user,再把它转化为 user-item pair,最后得到 user to item list 的聚合,然后放到 redis 中供线上使用。

Q2:冷启动的另一面是如何防止头部内容过热,样本占比过高,导致越推越集中,有什么方法吗?

A2:分享中已经提到了几个方法,从根本上来说,我们还是从泛化、探索和纠偏的角度去解决。比如 item id 如何初始化,使得它有更好的初始点,同时做一些泛化特征的引入,把泛化特征映射到行为语义空间。然后通过 Beta 分布来提升探索性;还有就是通过引入纯内容塔,去除 pid 等存在强记忆的特征,从而引入无热度偏差的纯泛化预估,还有就是纠偏的工作,希望在学习的过程中将热度因子单独学习和约束,提供纯兴趣标准和热度标准,线上合理的分配热度标准的使用力度。当然除了这些方法之外我们也尝试从数据增强缓解冷启动内容的稀疏性,还有从迁移学习的角度去使用热门的内容辅助冷启动内容的学习。

Q3:热门池的优普率具体是怎么算的?

A3:优普率其实是一个人工参与度非常高的工作,我们不可能完全用 model 去评估一个视频的优普率。如果我们能够用模型来评估一个内容,比如曝光量达到5万的视频,整体优普率会有人工参与,它一定会推送给审核人员来审核哪些是优普。
以上就是本次分享的内容,谢谢大家。


分享嘉宾

INTRODUCTION


丘志杰

快手

内容增长推荐算法专家

研究生毕业于中国科学院计算技术研究所,2016年毕业后先后在微软,腾讯,快手从事推荐算法研究与落地,目前在快手负责内容冷启动推荐算法的研究与优化。


往期优质文章推荐

往期推荐


腾讯TRS在线搜参在搜推广业务中的探索和实践

DCMM 助力工业企业数字化转型发展最佳实践

终于讲通了B站数据质量保障体系的方法论

信息流场景下的AIGC实践

NVIDIA-Merlin: 基于GPU的推荐系统训练和推理全套方案

运筹优化在菜鸟的实践应用

主动学习以及样本不均衡在图数据场景的探索

复旦孙思琦:语言模型在分子结构预测中的应用【前沿】

阿里巴巴数据模型设计与构建实践

全球唯一RNN架构大语言模型RWKV-次世代大模型的异质化路线

大淘宝模型治理

Spark 在 SQL, Python, Streamig 和 AI 集成等模块的创新应用

点个在看你最好看

继续滑动看下一个
DataFunSummit
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存